using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace NuMetaheuristics
{
    /// <summary>
    /// Defines the base capability for all types of candidate solution.
    /// </summary>
    /// <remarks>
    /// A genotype refers to a class of candidate solutions. A 
    /// particular instance of a genotype is called a genome. To use an analogy,
    /// a genotype is like the blueprint for a house, and the genome is like the
    /// constructed house.
    /// </remarks>
    public interface IGenotype : IComparable, ICloneable
    {
        /// <summary>
        /// A fitness score that represents the quality of the current solution
        /// in the current problem context.
        /// </summary>
        Fitness Fitness { get; set; }
                
        /// <summary>
        /// Copy the contents of the current object to the given object.
        /// </summary>
        /// <param name="recipient">The object whose contents will be replaced
        /// with the current object's contents.</param>
        void CopyTo(object recipient);
    }

}